import { Essay, User } from './src/models/index.js';

async function testCorrectionFlow() {
  console.log('\n🧪 开始测试批改流程...\n');

  try {
    // 1. 查找测试用户
    const user = await User.findOne();
    if (!user) {
      console.log('❌ 未找到测试用户，请先注册');
      process.exit(1);
    }
    console.log('✅ 找到测试用户:', user.username);

    // 2. 查找已批改的作文
    const completedEssay = await Essay.findOne({
      where: { status: 'completed' },
      order: [['updatedAt', 'DESC']]
    });

    if (!completedEssay) {
      console.log('⚠️  未找到已批改作文，需要先提交测试作文');
      console.log('\n📋 请执行以下步骤:');
      console.log('   1. 访问 http://localhost:5173/submit');
      console.log('   2. 提交一篇测试作文（至少50字）');
      console.log('   3. 等待批改完成（10-15秒）');
      console.log('   4. 再次运行此测试脚本\n');
      process.exit(0);
    }

    // 3. 验证数据
    console.log('\n📊 批改数据验证:');
    console.log('   作文ID:', completedEssay.id);
    console.log('   状态:', completedEssay.status);
    console.log('   分数:', completedEssay.score);
    console.log('   有批改结果:', !!completedEssay.correctionResult);
    console.log('   创建时间:', completedEssay.createdAt);
    console.log('   更新时间:', completedEssay.updatedAt);

    // 4. 判断结果
    let passed = true;
    const checks = [];

    if (completedEssay.status !== 'completed') {
      checks.push('❌ 状态不正确（期望: completed，实际: ' + completedEssay.status + '）');
      passed = false;
    } else {
      checks.push('✅ 状态正确 (completed)');
    }

    if (completedEssay.score === null || completedEssay.score === undefined) {
      checks.push('❌ 分数未保存');
      passed = false;
    } else {
      checks.push('✅ 分数已保存 (' + completedEssay.score + '分)');
    }

    if (!completedEssay.correctionResult) {
      checks.push('❌ 批改结果未保存');
      passed = false;
    } else {
      checks.push('✅ 批改结果已保存 (' + Object.keys(completedEssay.correctionResult).length + '个字段)');
    }

    if (completedEssay.updatedAt <= completedEssay.createdAt) {
      checks.push('❌ 更新时间异常（更新时间应该晚于创建时间）');
      passed = false;
    } else {
      const timeDiff = (completedEssay.updatedAt - completedEssay.createdAt) / 1000;
      checks.push('✅ 更新时间正常（批改耗时: ' + timeDiff.toFixed(2) + '秒）');
    }

    console.log('\n🔍 检查结果:');
    checks.forEach(c => console.log('   ' + c));

    if (passed) {
      console.log('\n✅✅✅ 测试通过！数据持久化修复成功！✅✅✅');
      console.log('\n🎉 批改功能现在可以正常使用了！');
      console.log('\n📝 建议继续测试:');
      console.log('   1. 在前端提交更多作文');
      console.log('   2. 查看历史记录是否正常显示');
      console.log('   3. 测试重复批改功能\n');
      process.exit(0);
    } else {
      console.log('\n❌ 测试失败！请查看上述错误项');
      console.log('\n🔧 故障排除建议:');
      console.log('   1. 确认后端服务已重启（应用了最新代码）');
      console.log('   2. 查看后端日志: backend/logs/application-2025-10-05.log');
      console.log('   3. 检查.env配置是否正确');
      console.log('   4. 如需帮助，请提供上述错误信息\n');
      process.exit(1);
    }

  } catch (error) {
    console.error('\n❌ 测试执行失败:', error.message);
    console.error('\n堆栈信息:', error.stack);
    process.exit(1);
  }
}

testCorrectionFlow();

